package Alibaba;

import common.ListNode;

/**
 * @author zhangmin
 * @create 2022-01-27 14:05
 *
 * 160. 相交链表
 * 给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点，返回 null 。
 * 双指针：两指针遍历链表，当到最后时，回到另一链表的头开始遍历，直到两者相同
 */
public class getIntersectionNode160 {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode p1=headA,p2=headB;
        while (p1!=p2){
            if (p1==null){
                p1=headB;
            }else {
                p1=p1.next;
            }
            if (p2==null){
                p2=headA;
            }else {
                p2=p2.next;
            }
        }
        return p1;
    }
}
